A conventional approach to copying data from one data storage array to another data storage array involves executing a data copy procedure at equal time intervals. For example, suppose that a production data storage array stores data on behalf of a host computer, and that the production data storage array and a replication data storage array are configured to perform asynchronous replication at 10 minute intervals. In such a situation, the production data storage array initiates copying of any new or modified data from the host computer to the replication data storage array every 10 minutes.
In the above-described example, if the production data storage array were to fail, the replication data storage array can operate in place of the failed production data storage array until the production data storage array is repaired. In this situation, it is expected that, at most, only 10 minutes of data from the host computer is lost. That is, it is expected that, in the worst case, only new or modified data that had been received from the host computer within the last 10 minutes has been lost because that data had not yet been copied from the production data storage array to the replication data storage array.